/*
    This file is part of cpp-ethereum.

    cpp-ethereum is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    cpp-ethereum is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with cpp-ethereum.  If not, see <http://www.gnu.org/licenses/>.
*/
/** @file Defaults.h
 * @author Gav Wood <i@gavwood.com>
 * @date 2014
 */

#pragma once

#include <libdevcore/Common.h>
#include <boost/filesystem/path.hpp>

namespace dev
{
namespace mptstate
{
struct Defaults
{
    friend class State;

public:
    Defaults();

    static Defaults* get()
    {
        if (!s_this)
            s_this = new Defaults;
        return s_this;
    }
    static void setDBPath(boost::filesystem::path const& _dbPath) { get()->m_dbPath = _dbPath; }
    static boost::filesystem::path const& dbPath() { return get()->m_dbPath; }

private:
    boost::filesystem::path m_dbPath;

    static Defaults* s_this;
};

}  // namespace mptstate
}  // namespace dev
